config = {
    "base": {
        "total_steps": 1000,
        "val_freq": 10,
    },
    "model": {
        "name": "RTFM",
        "n_features": 2048,
        "batch_size": 32,
        "num_segments": 32,
        "crop": 10
    },
    "train": {
        "name": "RTFMTrainDataset",
        "data_dir": "data/ShangHaiTech/I3D/train",
        "target_file": "data/ShangHaiTech/train.csv",
        "format": "i3d",
        "dataloader": {
            "batch_size": 32,
            "shuffle": True,
            "drop_last": True,
            "num_workers": 2
        }
    },
    "val": {
        "name": "RTFMInferDataset",
        "data_dir": "data/ShangHaiTech/I3D/test",
        "target_file": "data/ShangHaiTech/val.csv",
        "format": "i3d",
        "dataloader": {
            "batch_size": 1,
            "shuffle": False,
            "drop_last": True,
            "num_workers": 1
        }
    },
    "optim": {
        "lr": {
            "name": "CosineAnnealingDecay",
            "learning_rate": 0.001,
            "T_max": 1000,
        },
        "name": "Adam"
    },
    "metrics": {
        "name": "ShangHaiTechMetrics",
        "gt_path": "data/ShangHaiTech/gt-sh.npy"
    },
    "loss": {
        "name": "RTFM_loss",
        "batch_size": 32
    }
}